home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Utilities Experience
/
The Utilities Experience - Volume 1.iso
/
software
/
misc
/
e-n
/
graph2dv3.20
/
libs
/
garbagecollector.liesmich
< prev
next >
Wrap
Text File
|
1995-04-29
|
8KB
|
185 lines
16-Jun-92
Garbage-Collector Library
===============================
Was macht die garbagecollector.library:
Ein sogenannter Garbage-Collector ist ein Programm, daß von anderen
Programmen nicht mehr verwendete Ressourcen, wie in diesem Fall
Systemspeicher, aufsucht und automatisch freigibt.
Die Programme werden dadurch einfacher, flexibler und sicherer.
Um ihre Arbeit zu verrichten startet diese Library einen Hintergrundprozeß,
der parallel zum eigentlichen Programm läuft und ständig abwechselnd
nicht mehr verwendeten Speicher aufsucht und diesen dann freigibt.
Um die Effizienz zu steigern werden kleinere freie Speicherblöcke nicht
direkt an das System zurückgegeben, sondern von der Library zwischen-
gespeichert, so daß sie schneller wieder verwendet werden können.
Der Voreinstellungser GarbagePrefs:
Damit die Garbage-Collector Library auch auf sehr unterschiedlichen System
mit bestmöglicher Effizienz eingesetzt werden kann, können verschiedene
vom System abhängigen Einstellungen mit einem speziellen Editor gemacht
werden. Dies erledigt das Programm
GarbagePrefs
, das zu den anderen
Voreinstellungsern in das Verzeichnis 'Prefs' der Systemdiskette bzw.
der Systempartition kopiert werden sollte.
Wird GarbagePrefs durch einen Doppelklick auf sein Piktogramm gestartet,
können Über verschiedene Symbole einige Werte verändert werden. Diese können
dann wie bei den anderen Voreinstellungsern mit dem Symbol 'Speichern'
gespeichert und mit 'Benutzen' verwendet werden. 'Abbrechen' läßt die
zuletzt aktiven Werte unverändert.
Möchten Sie sich nicht weiter mit der Funktion der einzelnen einzustellen
befassen, reicht es, wenn Sie 'Werte vorschlagen' aus dem Menü 'Editieren'
anwählen und diese Werte dann mit 'Speichern' aktivieren.
Die einzelnen Werte haben folgende Bedeutung:
Collector-Task Priorität:
Die Priorität des Hintergrundprozesses, der den Speicher einsammelt. Der
Werte sollte auf jeden Fall kleiner null sein, da sonst dieser Prozeß
alle Rechenzeit verwendet und ein normales Arbeiten mit dem Computer
unmöglich macht.
Zudem sollte die Priorität kleiner als die aller Prozesse sein, die diese
Library verwenden.
Auch Chip-RAM allozieren:
Ist dieses Symbol angewählt, alloziert diese Library sowohl Chip-RAM wie
auch sonstiges RAM. Ist es jedoch nicht angewählt, wird das langsamere
Chip-RAM von der Library nicht verwendet. Dies ist jedoch nur sinnvoll,
wenn genügend sonstiger Speicher existiert.
Auf Collector-Zyklus warten:
Ein Collector-Zyklus ist das Suchen von nicht mehr verwendetem Speicher
und das anschließende Freigeben dieses Speichers.
Die hier einzugebenden Werte bestimmen, nach wievielen von der Library
angeforderten Objekten oder nach welcher Speichermenge die Library
mindestens einen Collector-Zyklus beendet haben sollte.
Gibt man hier sehr große Werte an, kann es passieren, daß der Collector
zu wenig Rechenzeit bekommt und nach einiger Zeit einen sehr aufwendigen
Collector-Zyklus bearbeiten muß, da sehr viele Objekte untersucht werden
müssen. Zu kleine Werte bremsen dagegen Programme stark, da sie zu oft
auf Collector-Zyklen warten müssen, die eigentlich nicht unbedingt nötig
wären.
Für die beiden Werte kann jeweils -1 angegeben werden, um anzuzeigen, daß
beliebig viele Objekte bzw. beliebig viel Speicher alloziert werden kann,
ohne daß auf einen Collector-Zyklus gewartet wird.
Maximal allozieren:
Die hier angegebenen Werte geben die Obergrenze an Speicher an, der von
der Library alloziert werden darf. Es kann zum einen die maximale
Anzahl an angeforderten Objekten (Speicherblöcken) und zum anderen
die maximal Anzahl in Bytes angegeben werden.
Speicher freihalten mindestens:
Die angegebene Menge an Speicher wird vom Collector immer freigehalten
und bleibt dem System zur Verfügung.
Damit man auch bei einem Speichermangel noch mit dem Rechner arbeiten
kann, sollte man hier mindesten ca. 20000 Bytes freihalten.
Alloziert die Library kein Chip-RAM (s.o.), kann hier jedoch ruhig
0 angegeben werden.
Größten Block freihalten mindestens:
Die Library alloziert nur Speicher, solange der größte freie
Speicherblock größer als der hier angegebene Wert bleibt.
Freigehaltenen Speicher prüfen alle:
Hier wird angegeben, wie oft, dh. nach wievielen Speicheranforderungen,
die bei 'Speicher freihalten mindestens' angegebene Untergrenze
geprüft werden soll.
Wird dies zu oft geprüft, wird das Anfordern von Speicher deutlich
langsamer. Wird jedoch zu selten geprüft, kann die Untergrenze
dennoch unterschritten werden.
'-1' gibt hier jeweils an, daß der freigehaltene Speicher nie geprüft
werden soll.
Größten Block prüfen alle:
Entsprechend zu 'Freigehaltenen Speicher prüfen', wird hier angegeben,
wie oft der größte freizuhaltende Block geprüft werden soll.
'-1' gibt hier jeweils an, daß der größte Block nie geprüft werden soll.
Maximale Größe der gemerkten Objekte:
Der hier angegebene Wert bestimmt eine maximale Größe von Objekten, die
von der Library zwischengespeichert werden sollen, um die Effizienz beim
erneuten Anfordern eines solchen Objekts zu steigern.
Maximal gemerkter Speicher:
Hier kann angegeben werden, bis zu welcher maximalen Anzahl an Objekten
und welcher Obergrenze an Speicher die Library sich freie Objekte merken
soll, bevor sie sie an das System zurückgibt.
Große Werte hier erhöhen die Effizienz, kosten jedoch Speicher.
Das Statistikprogramm GCStat:
Mit diesem Programm kann die Aktivität der Garbage-Collector Library
beobachtet werden. Nach dem Start durch Anwählen des Piktogramms öffnet
GCStat ein kleines Fenster. Dort werden in einer Zeile unter dem
Fenstertitel die Menge an derzeit von der Library allozierten Speicher,
die Anzahl der lebendigen und toten Objekte und die Nummer des aktuellen
Collector-Zyklus angezeigt.
Lebendige Objekte sind diejenigen, von denen die Library meint, daß sie noch
in Benutzung sind. Tote Objekte werden derzeit von keinem Programm benutzt,
werden jedoch von der Library zwischengespeichert.
Die Nummer des Collector-Zyklus wird einfach nach jedem Zyklus um eins hoch-
gezählt. Der erste Zyklus hat die Nummer 1.
Unterhalb dieser Textzeile zeigt GCStat grafisch das Mengenverhältnis von
toten zu lebendigen Objekten an. Dabei wird der Anteil der lebendigen
Objekte mit Farbe 1 (gewöhnlich schwarz) und der der toten mit Farbe 3
(gewöhnlich blau) dargestellt.
Zusätzlich zeigt eine waagerechte Linie in Farbe 2 (weiß) an, wieviel
Speicher im Augenblick in Bytes von der Library alloziert wurde. Dabei ist
diese Linie oben im Fenster, wenn dies viel Speicher ist, und unten sonst.
Kopierrecht:
Die garbagecollector.library und der dazugehörende Vereinsteller
GarbagePrefs und das Programm GCStat sind © 1992 Fridtjof Siebert.
Sie und diese Dokumentation dürfen, auch einzeln, zusammen mit Programmen,
die mit dem Amiga Oberon Compiler übersetzt wurden, frei vertrieben werden.
Dies schließt die Veröffentlichung als frei kopierbare oder auch als
kommerzielle Software ein.
Zusammen mit Programmen, die diese Library benutzen, die jedoch nicht mit
Amiga Oberon übersetzt wurden, darf diese Library nur mit ausdrücklicher
schriftlicher Genehmigung des Autors vertrieben werden.
--- Fridtjof.